<?php

namespace X;

class CheckAccess
{
    public static function Controller(){

        // VERIFICAR SI ESTÁ LOGUEADO

            // si no tiene asignado algo en namespace Usuario
            if (\Zend_Session::namespaceIsset('Usuario') == false){

                // genera y deja que ErrorController maneje esta excepcion
                throw new Exception('No está logueado.', '/login');
            }
    }
    
    public static function PageAction($funcionalidad){

        // VERIFICA SI ESTÁ HABILITADO PARA ACCEDER A ESTA FUNCIONALIDAD

            // obtiene el objeto de sesión
            $session = new \Zend_Session_Namespace('Usuario');

            // si la funcionalidad no está asignada
            if ($session->__isset($funcionalidad) == false){

                // genera y deja que ErrorController maneje esta excepcion
                throw new Exception('No tiene permiso para acceder a esta funcionalidad.', '/');
            }
        return false;
    }

    public static function AjaxAction($controller, $funcionalidad){

        // VERIFICA SI FUE ACCEDIDO COMO AJAX

            // si no fue accedido como ajax
            if ($controller->getRequest()->isXmlHttpRequest() == false){

                // genera y deja que ErrorController maneje esta excepcion
                throw new Exception('Forma incorrecta de acceder.', '/');
            }

        // VERIFICA SI ESTÁ HABILITADO PARA ACCEDER A ESTA FUNCIONALIDAD

            // obtiene el objeto de sesión
            $session = new \Zend_Session_Namespace('Usuario');

            // si la funcionalidad no está asignada
            if ($session->__isset($funcionalidad) == false){

                // genera muestra el mensaje de error
                Msg::Failure('No tiene permiso para acceder a esta funcionalidad.');

                // interrumpr la acción
                return true;
            }

        // SUCCESS

        return false;
    }
}